zabbix

nvme_info.sh

zabbix_agent2.conf

xml шаблон Templates/Server hardware/Sli_nvme

yaml шаблон

mkdir /etc/zabbix/scripts
cd /etc/zabbix/scripts
wget https://eas1804.github.io/Linux/zabbix/nvme_info.sh
chmod +x nvme_info.sh
./nvme_info.sh
ls -lt info 

Скрипт сбора метрик

/etc/zabbix/scripts/nvme_info.sh

#!/bin/bash

PATH_INFO="/etc/zabbix/scripts/info"
mkdir -p "$PATH_INFO"


# Метрики носителей
for dev in nvme0n1 nvme1n1; do
    OUT=$(smartctl -a /dev/$dev 2>/dev/null)
    echo "$OUT" | grep "Percentage Used" | sed 's/[^0-9]*//g' > "$PATH_INFO/Percentage_$dev.txt"
# износ (Percentage Used)
	
    echo "$OUT" | grep "Temperature Sensor 1" | awk '{print $4}' > "$PATH_INFO/Temperature_$dev.txt"
# температурa (Temperature Sensor 1)  менее 75 С
	
    echo "$OUT" | grep "Critical Warning" | awk '{print $3}' > "$PATH_INFO/Critical_$dev.txt"
# Состояние устройства (Critical Warning). Если значение != 0, значит есть предупреждение.

    echo "$OUT" | grep "Available Spare:" | awk '{print $3}' > "$PATH_INFO/Spare_$dev.txt"
# Доступный запас ресурса (Available Spare). Информирует, сколько ресурса осталось, %:
	
    echo "$OUT" | grep "Power Cycles" | awk '{print $3}' > "$PATH_INFO/PowerCycles_$dev.txt"
# Счётчик сбросов питания (Power Cycles)# Позволяет понять, как часто диск перезапускается — может быть признаком проблемы питания

    echo "$OUT" | grep "Power On Hours" | awk '{print $4}' > "$PATH_INFO/PowerOnHours_$dev.txt"
# Общее время работы (Power On Hours) . Полезно для оценки возраста устройства:

    echo "$OUT" | grep "Data Units Written" | awk '{print $4}' > "$PATH_INFO/Written_$dev.txt"
    echo "$OUT" | grep "Data Units Read" | awk '{print $4}' > "$PATH_INFO/Read_$dev.txt"
#Счётчик перезаписей (Data Units Written/Read). Информативно для оценки нагрузки:
done


#Метрики zfs
/sbin/zpool status | grep DEGRADED | wc -l > "$PATH_INFO"/zfs_degraded.txt
# pool в состоянии DEGRADED. Если значение != 0, значит есть предупреждение.

/sbin/zpool list  | grep ONLINE   | wc -l > "$PATH_INFO"/zfs_online.txt
# Pool в состоянии Online. Если значение != 1, значит есть предупреждение.

#Параметр CAP (capacity) в выводе zpool list показывает, сколько процентов пула уже занято. Мнее 70% - OK
/sbin/zpool list | grep rpool| awk '{print $8}' > "$PATH_INFO"/zfs_cap.txt

chmod +x /etc/zabbix/scripts/nvme_info.sh

/etc/systemd/system/nvme_info.service


[Unit]
Description=nvme info
After=network.target

[Service]
Type=oneshot
ExecStart=/etc/zabbix/scripts/nvme_info.sh
WorkingDirectory=/etc/zabbix/scripts
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

[Install]
WantedBy=multi-user.target

/etc/systemd/system/nvme_info.timer

[Unit]
Description=Run nvme_info script every 60 minutes

[Timer]
OnBootSec=1min
OnUnitInactiveSec=60min
Unit=nvme_info.service

[Install]
WantedBy=timers.target
systemctl daemon-reload

systemctl  start   nvme_info.service
systemctl  status  nvme_info.service

systemctl enable --now nvme_info.timer
systemctl status  nvme_info.timer

systemctl list-timers | grep NEXT && systemctl list-timers | grep nvme_info.timer